package rw.gameobject;


import rw.input.Input;
import rw.main.Main;
import rw.rwbehaviour.RwBehaviour;
import rw.rwbehaviour.Vector2;
import rw.util.FindPic;

import java.awt.image.BufferedImage;
import java.util.List;

/**
 * 示例游戏物体
 *
 * @author RW daze
 */
public class ExampleGameObject extends RwBehaviour {
    // 从资源文件夹中加载的动画图片
    private List<BufferedImage> animation;

    // 当前动画图片播放到第几张
    private int index = 0;

    /**
     * 开始函数，在该游戏物体进入场景时，会执行一次的函数
     */
    @Override
    public void start() {
        // 修改自己在游戏场景中的坐标（默认是0,0
        position = new Vector2(400, 270);

        // 将显示的图片赋值为资源文件夹中的star.png（默认为null
        image = FindPic.pic.get("star.png");

        // 加载显示的动画
        animation = FindPic.animation.get("Tomomo_00");

        // 图片的透明度（默认是1
        alpha = 0.5f;

        // 图片显示的优先级（默认是0，优先级高的会覆盖优先级低的图片
        positionZ = 1;

        // 图片的横纵向拉伸度（默认是1，1，可以为负
        scale = new Vector2(1.5f, 1.5f);

        // 设置该物体是否被激活（默认就是激活喔
        active = true;

        // 设置图片是否可见（默认是可见喔
        visible = true;

        // 设置图片的旋转角度（默认是0，单位是度
        angle = 0;
    }

    /**
     * 刷新函数，游戏每一帧都会执行一次的函数
     */
    @Override
    public void update() {
        //移动的速度
        float speed = 1;
        //如果左键按下
        if (Input.getInstance().isHold(Main.LEFT)) {
            //横坐标减1
            position.x -= speed;
        }
        //如果右键按下
        if (Input.getInstance().isHold(Main.RIGHT)) {
            //横坐标加1
            position.x += speed;
        }
        //如果上键按下
        if (Input.getInstance().isHold(Main.UP)) {
            //纵坐标减1
            position.y -= speed;
        }
        //如果下键按下
        if (Input.getInstance().isHold(Main.DOWN)) {
            //纵坐标加1
            position.y += speed;
        }

        //如果A键被按下（Z键，回车等，被称之为A键，可以在Main类中修改
        if (Input.getInstance().isPush(Main.A)) {
            //让自己可见（不可见
            visible = !visible;
        }

        //如果B键被按下（X被称之为B键，可以在Main类中修改
        if (Input.getInstance().isPush(Main.B)) {
            // 根据提前读取好的动画图片来进行显示
            image = animation.get(index);
            index++;
            if (index >= animation.size()) {
                index = 0;
            }
        }

        //当你按住空格时，图像旋转
        if (Input.getInstance().isHold(Main.SPACE)) {
            angle += 0.1;
        }

        //当你松开空格时，在场景中加入同一个物体
        if (Input.getInstance().isReleased(Main.SPACE)) {
            //新建一个物品
            RwBehaviour newItem = new NewGameObject();
            //向场景中添加一个物品
            Main.addGameObject(newItem);
            //从场景中删除这个物品
            Main.remGameObject(newItem);
        }

        //如果C键被弹起（ESC被称之为C键，可以在Main类中修改
        if (Input.getInstance().isReleased(Main.C)) {
            //退出程序
            System.exit(0);
        }
    }
}